#ifndef SHIP_H
#define SHIP_H

#include <QObject>
#include <QThread>
#include "macrohelper.h"
#include "cargo.h"

// 船只
class Ship : public QThread
{
    Q_OBJECT
public:
    explicit Ship(const QString id);

    void run() override;

    // 停靠码头
    void berth();
    // 装在货物
    void loadCargo();
    // 通知调度员装载完毕
    void notifyDispatcherLoadReady();
    // 将货物运走
    void transportAway();
    // 申请拿货
    void applyForLoading();

    const QString getId() const;

    const QString getCargoId() const;

    void setIsPass(const bool is_pass);

signals:
    void loadReady(const Ship* ship);

public slots:
private:
    QString m_id;
    std::shared_ptr<Cargo> m_cargo;
    bool m_is_pass;
};

#endif // SHIP_H
